package cn.tedu.shoppingmall.mapper;

import cn.tedu.shoppingmall.vo.User;
import cn.tedu.shoppingmall.vo.UserDetail;
import org.apache.ibatis.annotations.*;

import java.util.List;
//用户数据库增删改查操作
@Mapper
public interface UserMapper {
    //添加新用户信息-->注册
    @Insert("insert into user values(null,#{username},#{password},#{nick},#{phone},#{age})")
    void insert(User u);
    //新增信息到用户细节表里  -->个人中心完善信息
    @Insert("insert into userdetail(username,nick,phone,age,intro,userid,price,sum,url) values(#{username},#{nick},#{phone},#{age},#{intro},#{userid},#{price},#{sum},#{url})")
    void insertUserDetail(UserDetail u);


    //通过用户id绑定,将用户细节表信息修改
    @Update("update userdetail set username=#{username},nick=#{nick},phone=#{phone},age=#{age},gender=#{gender},intro=#{intro},url=#{url},sum=#{sum},price=#{price} where userid=#{userid}")
    void updateUserDetail(UserDetail u);
    //通过用户名字绑定,将用户细节表的`历史购买过商品得总金额`和`历史购买过商品得总数量`信息修改
    @Update("update userdetail set price=#{price},sum=#{sum} where username=#{username}")
    void UpdateUserPriceAndSum(UserDetail u);
    //通过用户id绑定,将用户表信息修改  --细节表改完,同步到user表中
    @Update("update user set username=#{username},age=#{age},nick=#{nick},phone=#{phone}  where id=#{userid}")
    void updateUsernameById(UserDetail userDetail);


    //通过username查询用户细节表中的所有信息  -->为了个人中心展示
    @Select("select username,nick,phone,age,gender,intro,userid,price,sum,url from userdetail where username=#{username}")
    UserDetail findUserDetailByUserUsername(String username);
    //通过phone查询用户表中的所有信息  -->为了验证手机号存不存在
    @Select("select * from user where phone=#{phone}")
    User selectByPhone(String phone);
    //通过username查询用户表中的所有信息  -->为了验证用户名存不存在
    @Select("select * from user where username=#{username}")
    User selectByUsername(String username);
    //通过userid(对应用户表中的id)查询用户表中的信息  -->为了将旧信息同步到用户细节表中
    @Select("select * from user where id=#{userid}")
    UserDetail selectById(Integer userid);
    //通过userid查询用户细节表中的信息
    @Select("select * from userdetail where userid=#{userid}")
    UserDetail selectByUserid(Integer userid);
    //管理页搜索全部用户信息
    @Select("select * from userdetail ")
    List<UserDetail> selectUserDetailAll();

}
